Add hover effects to navigation components for better user interaction feedback#69151
Conversation
- Add hover state styling to navigation tab bar items with background color change - Add hover effect to floating action button with success hover background - Add hover effect to navigation tab bar avatar with green ring indicator - Add testID attributes for better testability - Add comprehensive unit tests for hover functionality - Add navigationTabBarItemHovered style to theme
|
If this is ready for a design review, let us know and myself or @dubielzyk-expensify can spin up a test build. |
|
Videos are looking good to me. I don't think we really even need a test build here. Will wait for @dubielzyk-expensify to have a look before officially approving (Jon—go for it if it looks good to you!) |
|
I'm gonna whip up a test build cause I think we might wanna tweak the hover icon color from |
|
🚧 @dubielzyk-expensify has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
It's looking pretty good. Let's change the hover icon color to be |
|
Updated @dubielzyk-expensify ! |
|
Can you gimme a little video so I can see? |
|
Here it is: Screen.Recording.2025-08-26.at.11.17.23.AM.mov |
|
Ahh, sweet. Everything is good here from the design side. I'll approve that side and @getusha can handle the code bit 😄 Awesome job! |
|
Oh, great 🦅👀 @dannymcclain . Yeah let's fix that before we merge |
|
@getusha addressed code comments. PTAL |
trjExpensify
left a comment
There was a problem hiding this comment.
Hover effects makes sense, approving from a product perspective. Will leave the mobile conundrum to design, I agree with Danny doe!
|
Yeah, definitely curious how the other tabs will look on mobile. I don't think we need to do anything here so maybe we just leave them as-is, but I like what you did with the global create button to mimic other Success buttons in the app. |
|
Agree with what the designers are saying. I think there's also other effects we can apply if we want visual feedback on the tabs. But I'm always fan of adding a pressed state |
|
Other tabs would roughly look like this. Screen.Recording.2025-09-05.at.12.20.25.in.the.afternoon.mov |
|
@cosmicvulpes Reassure test is failing. |
|
I don't think I love the full BG color on press for mobile, but curious what others think. |
|
I don't mind it, but happy to go with other things if you have better suggestions @shawnborton . It's consistent with desktop and the finger will obscure most of it anyways. No strong feelings |
|
Fair point about desktop consistency... but on desktop, we use the fullBG for hover, and on mobile, we don't have hover... I think I would rather just do nothing on mobile for now? |
|
I'm fine with doing nothing on mobile for now. The full background pressed state doesn't translate that well to mobile IMO. |
|
@getusha that was a flaky test it seems. Everything is green now. 🟢 |
|
@getusha can we merge now? |
|
🚧 @shawnborton has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! 🧪🧪
|
|
Took it for a quick spin, feeling good to me 👍 |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/MonilBhavsar in version: 9.2.9-0 🚀
|
|
🚀 Deployed to staging by https://github.com/MonilBhavsar in version: 9.2.11-0 🚀
|
|
🚀 Deployed to production by https://github.com/francoisl in version: 9.2.12-4 🚀
|

Explanation of Change
This PR adds hover effects to navigation components to provide better visual feedback when users interact with them. The changes include:
sidebarHoverwhen hoveredsuccessHoverbackground color when hovered (only when not active)testIDattributes to key components for better testingThe hover effects improve the user experience by providing immediate visual feedback, making the interface feel more responsive and interactive.
Fixed Issues
$ #67369
PROPOSAL: #67369 (comment)
Tests
Offline tests
Same as above.
QA Steps
Same as above.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
android_web.mp4
iOS: Native
iOS: mWeb Safari
Simulator.Screen.Recording.-.iPhone.16.Pro.-.2025-08-25.at.21.29.31.mp4
MacOS: Chrome / Safari
For dark theme:
Screen.Recording.2025-08-25.at.9.16.27.PM.mov
For light theme:
Screen.Recording.2025-08-25.at.5.38.56.PM.mov
MacOS: Desktop
Screen.Recording.2025-08-25.at.9.22.18.PM.mov